<?php
require('to/Maselecciones_Candidatos.php');

class maselecciones_candidatosDAO{
    const SEL_ALL = "SELECT * FROM maselecciones_candidatos WHERE status = 'A'";
    const ADD_VOTO = "UPDATE maselecciones_candidatos SET votos = %d WHERE status='A' AND id = %d";
    const SEL_BY_ID = "SELECT * FROM maselecciones_candidatos WHERE status = 'A' AND id = %d";
    const SEL_CONTIENDA = "SELECT DISTINCT contienda FROM maselecciones_candidatos WHERE status='A' ORDER BY contienda ASC";
    const SEL_BY_CONTIENDA = "SELECT * FROM maselecciones_candidatos WHERE status = 'A' AND contienda = %d";
    const SEL_SUM_VOTOS = "SELECT sum( votos ) AS total_votos FROM `maselecciones_candidatos` WHERE contienda = %d";

    public static function getAll(){
        $sSql = self::SEL_ALL;

        $DB = DBFunctions::getInstance();
        $arrMasElecciones = $DB->execSelect($sSql, array());

        return self::populate($arrMasElecciones);
    }

    public static function getById($id){
        $sSql = self::SEL_BY_ID;

        $DB = DBFunctions::getInstance();
        $arrMasElecciones = $DB->execSelect($sSql, array($id));

        return self::populate($arrMasElecciones);
    }

    public static  function addVoto($cantidad, $id){
        $candidato = self::getById($id);

        $voto = $candidato[0]->getVotos();

        $num_votos = (int)$voto  + 1;

        $sSql = self::ADD_VOTO;

        $DB = DBFunctions::getInstance();
        $DB->execQ($sSql, array($num_votos, $id));
    }

    public static function getContiendas(){
        $SQL = self::SEL_CONTIENDA;
        $DB = DBFunctions::getInstance();
        $arrContienda = $DB->execSelect($SQL, array());

        return $arrContienda;
    }

    public static function getByContienda($contienda){
        $sSql = self::SEL_BY_CONTIENDA;

        $DB = DBFunctions::getInstance();
        $arrMasElecciones = $DB->execSelect($sSql, array($contienda));

        return self::populate($arrMasElecciones);
    }

    public static function getNumVotosByContienda($contienda){
        $sSql = self::SEL_SUM_VOTOS;

        $DB = DBFunctions::getInstance();
        $arrMasElecciones = $DB->execSelect($sSql, array($contienda));

        return $arrMasElecciones[0];
    }

    public function populate($arrMasElecciones){
        $objMasElecciones = array();

        foreach($arrMasElecciones as $e){
            $objCandidato = new MaseleccionesCandidatos();
            $objCandidato->setID($e["id"]);
            $objCandidato->setContienda($e["contienda"]);
            $objCandidato->setPuesto($e["puesto"]);
            $objCandidato->setSubpuesto($e["sub_puesto"]);
            $objCandidato->setPartido($e["partido"]);
            $objCandidato->setNombre($e["nombre"]);
            $objCandidato->setFoto($e["foto"]);
            $objCandidato->setResultsClass($e["results_class"]);
            $objCandidato->setContainerType($e["container_type"]);
            $objCandidato->setClassType($e["class_type"]);
            $objCandidato->setPartidoLogo($e["partido_logo"]);
            $objCandidato->setVotos($e["votos"]);

            array_push($objMasElecciones, $objCandidato);
        }

        return $objMasElecciones;
    }

}